home *** CD-ROM | disk | FTP | other *** search
/ Steal This CD / steal_this_cd.iso / Chapter 07 - Where the Hackers Are / virc200.exe / {app} / Scripts / sounds.vsc < prev    next >
Text File  |  2003-05-16  |  3KB  |  110 lines

  1. // sounds.vsc - implements CTCP SOUND
  2. // * /sound <filename> to send a sound to the active channel
  3. // * Option: automatically request sounds I don't have
  4. // * Option: automatically send sound files when requested
  5. // * Option: size limit for automatic sound sharing (KB)
  6.  
  7. Name Sounds for ViRC 2
  8.  
  9. // Version check
  10.  
  11. if $exebuild < 114
  12.   MessageBox sounds.vsc requires ViRC 2.0rc2 (200/114 or later).
  13.   Halt
  14. endif
  15.  
  16. // Settings
  17.  
  18. AddScriptControl config check "Play CTCP sounds" sounds_play = 1
  19. AddScriptControl config check "Automatically request sounds I don't have" sounds_request = 1
  20. AddScriptControl config check "Automatically send sound files when requested" sounds_share = 1
  21. AddScriptControl config edit "Size limit for automatic sound sharing (KB)" sounds_sharemaxkb = 25
  22. AddEventSound sounds_unknown "/Sound" "Unknown sound received"
  23.  
  24. // Aliases
  25.  
  26. Alias SOUND
  27.   // Sound [channel] [filename]
  28.   
  29.   if $ischannel($1)
  30.     @l $chan = $1
  31.     @l $fn = $2-
  32.   else
  33.     @l $chan = $C
  34.     @l $fn = $1-
  35.   endif
  36.   
  37.   if [$fn] == []
  38.     ChDir $getpath(sound)
  39.     @l $fn = $opendialog(Select a sound file|Sound files (*.wav;*.mid;*.rmi;*.mp3)|*.wav;*.mid;*.rmi;*.mp3|All files (*.*)|*.*)
  40.     Halt if [$fn] == []
  41.   else if $strpos(\ $fn) == 0
  42.     @l $fn = $getpath(sound)$fn
  43.   endif
  44.   
  45.   PlaySoundFile $fn
  46.   
  47.   @l $fn = $rstrtokr(\ $fn)
  48.   if $strposex(" " $fn)
  49.     @l $fn = "$fn"
  50.   endif
  51.   
  52.   CTCP $chan SOUND $fn
  53. EndAlias
  54.  
  55. // Events
  56.  
  57. Event CTCPSound "% PRIVMSG % :\ASOUND"
  58.   @l $requested = $null
  59.   if $fileexists($getpath(sound)$4-)
  60.     if $getsetting(sounds_play)
  61.       PlaySoundFile $4-
  62.     endif
  63.   else
  64.     PlayEventSound sounds_unknown
  65.     if $getsetting(sounds_request)
  66.       @l $requested = $null (automatically requested)
  67.       ^Msg $nick !$nick $4-
  68.     endif
  69.   endif
  70.   
  71.   if $ischannel($2)
  72.     TextOut > $2 ecCTCP *** \b$_active(nick $nick)\b plays a sound${requested}: $4-
  73.   else
  74.     TextOut ecCTCP *** Private sound from \b$_active(nick $nick)\b${requested}: $4-
  75.   endif
  76. EndEvent
  77.  
  78. Event SoundRequest -after -eval "% PRIVMSG % :!$N"
  79.   Halt if !$getsetting(sounds_share)
  80.   
  81.   @l $fn = $4-
  82.   
  83.   // strip quotes
  84.   if $wildmatch($fn "*")
  85.     @l $fn = $substr($fn 2 $($length($fn) - 2))
  86.   endif
  87.   
  88.   @l $fn = $getpath(sound)$fn
  89.   if $fileexists($fn)
  90.     if $getfilesize($fn) <= $(1024 * $getsetting(sounds_sharemaxkb))
  91.       DCC Send $nick $fn
  92.     else
  93.       ^Notice $nick Sorry, that file is too big for me to send automatically. ($($getfilesize($fn) / 1024) KB)
  94.     endif
  95.   endif
  96. EndEvent
  97.  
  98. // Menus
  99.  
  100. MenuTree MT_SOUNDS_CHANNELTEXTPOPUP
  101.   M_CHANSOUND <none> 0 0 &Sound...
  102. EndMenuTree
  103.  
  104. MenuItem M_CHANSOUND on MT_SOUNDS_CHANNELTEXTPOPUP
  105.   Sound $C
  106. EndMenuItem
  107. MenuHint M_CHANSOUND on MT_SOUNDS_CHANNELTEXTPOPUP = Play a sound file in the channel
  108.  
  109. MergeMenu MT_SOUNDS_CHANNELTEXTPOPUP after MT_CHANNELTEXTPOPUP
  110.